app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
↳ QTRS
↳ Overlay + Local Confluence
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(cons, app(f, x)), app(app(map, f), xs))
APP(rev, app(app(cons, x), l)) → APP(rev2, x)
APP(rev, app(app(cons, x), l)) → APP(app(rev1, x), l)
APP(rev, app(app(cons, x), l)) → APP(app(rev2, x), l)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(filter2, app(f, x)), f), x)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(app(filter2, app(f, x)), f), x), xs)
APP(app(app(app(filter2, true), f), x), xs) → APP(app(cons, x), app(app(filter, f), xs))
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(filter, f), app(app(cons, x), xs)) → APP(filter2, app(f, x))
APP(app(rev2, x), app(app(cons, y), l)) → APP(cons, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(rev1, x), app(app(cons, y), l)) → APP(rev1, y)
APP(app(rev1, x), app(app(cons, y), l)) → APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) → APP(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(filter2, app(f, x)), f)
APP(app(app(app(filter2, false), f), x), xs) → APP(filter, f)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(app(rev2, y), l)
APP(app(app(app(filter2, true), f), x), xs) → APP(filter, f)
APP(rev, app(app(cons, x), l)) → APP(rev1, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev2, y)
APP(app(app(app(filter2, true), f), x), xs) → APP(cons, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(app(cons, x), app(app(rev2, y), l))
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(rev, app(app(cons, x), l)) → APP(cons, app(app(rev1, x), l))
APP(app(map, f), app(app(cons, x), xs)) → APP(cons, app(f, x))
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
APP(app(map, f), app(app(cons, x), xs)) → APP(app(cons, app(f, x)), app(app(map, f), xs))
APP(rev, app(app(cons, x), l)) → APP(rev2, x)
APP(rev, app(app(cons, x), l)) → APP(app(rev1, x), l)
APP(rev, app(app(cons, x), l)) → APP(app(rev2, x), l)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(filter2, app(f, x)), f), x)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(app(filter2, app(f, x)), f), x), xs)
APP(app(app(app(filter2, true), f), x), xs) → APP(app(cons, x), app(app(filter, f), xs))
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(filter, f), app(app(cons, x), xs)) → APP(filter2, app(f, x))
APP(app(rev2, x), app(app(cons, y), l)) → APP(cons, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(rev1, x), app(app(cons, y), l)) → APP(rev1, y)
APP(app(rev1, x), app(app(cons, y), l)) → APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) → APP(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(filter2, app(f, x)), f)
APP(app(app(app(filter2, false), f), x), xs) → APP(filter, f)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(app(rev2, y), l)
APP(app(app(app(filter2, true), f), x), xs) → APP(filter, f)
APP(rev, app(app(cons, x), l)) → APP(rev1, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev2, y)
APP(app(app(app(filter2, true), f), x), xs) → APP(cons, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(app(cons, x), app(app(rev2, y), l))
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(rev, app(app(cons, x), l)) → APP(cons, app(app(rev1, x), l))
APP(app(map, f), app(app(cons, x), xs)) → APP(cons, app(f, x))
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
APP(app(map, f), app(app(cons, x), xs)) → APP(app(cons, app(f, x)), app(app(map, f), xs))
APP(rev, app(app(cons, x), l)) → APP(app(rev1, x), l)
APP(rev, app(app(cons, x), l)) → APP(rev2, x)
APP(rev, app(app(cons, x), l)) → APP(app(rev2, x), l)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(filter2, app(f, x)), f), x)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(app(filter2, app(f, x)), f), x), xs)
APP(app(app(app(filter2, true), f), x), xs) → APP(app(cons, x), app(app(filter, f), xs))
APP(app(filter, f), app(app(cons, x), xs)) → APP(filter2, app(f, x))
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(cons, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(rev, app(app(cons, x), l)) → APP(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
APP(app(rev1, x), app(app(cons, y), l)) → APP(app(rev1, y), l)
APP(app(rev1, x), app(app(cons, y), l)) → APP(rev1, y)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(filter2, app(f, x)), f)
APP(app(app(app(filter2, false), f), x), xs) → APP(filter, f)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(rev2, x), app(app(cons, y), l)) → APP(app(rev2, y), l)
APP(app(app(app(filter2, true), f), x), xs) → APP(filter, f)
APP(rev, app(app(cons, x), l)) → APP(rev1, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev2, y)
APP(app(app(app(filter2, true), f), x), xs) → APP(cons, x)
APP(app(rev2, x), app(app(cons, y), l)) → APP(app(cons, x), app(app(rev2, y), l))
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(app(map, f), app(app(cons, x), xs)) → APP(cons, app(f, x))
APP(rev, app(app(cons, x), l)) → APP(cons, app(app(rev1, x), l))
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
APP(app(rev1, x), app(app(cons, y), l)) → APP(app(rev1, y), l)
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
REV1(x, cons(y, l)) → REV1(y, l)
REV(nil)
REV(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))
map(x0, nil)
map(x0, cons(x1, x2))
filter(x0, nil)
filter(x0, cons(x1, x2))
filter2(true, x0, x1, x2)
filter2(false, x0, x1, x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(app(rev1, x), app(app(cons, y), l)) → APP(app(rev1, y), l)
cons2 > REV12
REV12: [1,2]
cons2: multiset
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
APP(rev, app(app(cons, x), l)) → APP(app(rev2, x), l)
APP(app(rev2, x), app(app(cons, y), l)) → APP(app(rev2, y), l)
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev, app(app(cons, x), app(app(rev2, y), l)))
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
REV2(x, cons(y, l)) → REV2(y, l)
REV(cons(x, l)) → REV2(x, l)
REV2(x, cons(y, l)) → REV(cons(x, rev2(y, l)))
rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))
rev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0
rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)
rev(nil)
rev(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))
map(x0, nil)
map(x0, cons(x1, x2))
filter(x0, nil)
filter(x0, cons(x1, x2))
filter2(true, x0, x1, x2)
filter2(false, x0, x1, x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(rev, app(app(cons, x), l)) → APP(app(rev2, x), l)
APP(app(rev2, x), app(app(cons, y), l)) → APP(app(rev2, y), l)
Used ordering: Combined order from the following AFS and order.
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev, app(app(cons, x), app(app(rev2, y), l)))
trivial
rev1: []
0: multiset
s: multiset
cons1: [1]
nil: multiset
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
APP(app(rev2, x), app(app(cons, y), l)) → APP(rev, app(app(cons, x), app(app(rev2, y), l)))
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
Used ordering: Combined order from the following AFS and order.
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP1 > map > app2 > filter
filter2 > filter
true > app2 > filter
cons > app2 > filter
false > app2 > filter
filter: multiset
true: multiset
APP1: [1]
map: multiset
false: multiset
app2: [1,2]
filter2: multiset
cons: multiset
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
MAP(f, cons(x, xs)) → MAP(f, xs)
REV(nil)
REV(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))
map(x0, nil)
map(x0, cons(x1, x2))
filter(x0, nil)
filter(x0, cons(x1, x2))
filter2(true, x0, x1, x2)
filter2(false, x0, x1, x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
cons2 > MAP2
cons2: multiset
MAP2: [1,2]
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
app(rev, nil) → nil
app(rev, app(app(cons, x), l)) → app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) → 0
app(app(rev1, app(s, x)), nil) → app(s, x)
app(app(rev1, x), app(app(cons, y), l)) → app(app(rev1, y), l)
app(app(rev2, x), nil) → nil
app(app(rev2, x), app(app(cons, y), l)) → app(rev, app(app(cons, x), app(app(rev2, y), l)))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(rev, nil)
app(rev, app(app(cons, x0), x1))
app(app(rev1, 0), nil)
app(app(rev1, app(s, x0)), nil)
app(app(rev1, x0), app(app(cons, x1), x2))
app(app(rev2, x0), nil)
app(app(rev2, x0), app(app(cons, x1), x2))
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)